小弟是深度學習方面新手
最近想試試圖像辨識但遇到了難題
我想辨認的三種東西分別是lad, lcx, rca
這三個類型的資料夾下分別又有100個資料夾裡面是5張jpg檔
train ->floder
-----lad ->floder
----------1 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------2 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------3 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
-----lcx ->floder
----------1 ->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------2->floder
---------------v1 v2 v3 v4 v5 ->jpg
----------3->floder
---------------v1 v2 v3 v4 v5 ->jpg
test 和 vaildation 資料夾也是同樣結構
一般的文章或書籍所教之方法的資料結構都是
train ->floder
-----lad ->floder
----------1->jpg
----------2->jpg
----------3->jpg
----------4->jpg
lcx ->floder
----------1->jpg
----------2->jpg
----------3->jpg
----------4->jpg
5張圖片放置在"rcx", "lad", "lcx"資料夾底下的"1", "2", "3", "4", "5" 資料夾
請問各位前備我該用哪種語法讓模型知道訓練的圖片在資料夾下
我用的是python的tensorflow
程式碼如下:
labels = ['lad', 'rca', 'lcx']
def get_data(data_dir):
data = []
for label in labels:
path = os.path.join(data_dir, label)
class_num = labels.index(label)
dirs = os.listdir(path)
for file in dirs:
pic_dir=os.path.join(path,file)
for i in os.listdir(pic_dir):
image_dir=os.path.join(pic_dir,i)
img1 = cv2.imread(os.path.join(path, image_dir))
img1 = cv2.cvtColor(img1, cv2.COLOR_RGB2BGR)
data.append([img1, class_num])
return np.array(data)
train = get_data('C:/')
test = get_data('C:/')
x_train = []
y_train = []
x_val = []
y_val = []
for feature, label in train:
x_train.append(feature)
y_train.append(label)
for feature, label in test:
x_val.append(feature)
y_val.append(label)
x_train = np.array(x_train) / 255
x_val = np.array(x_val) / 255
x_train.reshape(-1, img_size, img_size, 1)
y_train = np.array(y_train)
x_val.reshape(-1, img_size, img_size, 1)
y_val = np.array(y_val)
感謝大家的指教!
每個留言我都會認真看!!
嗨~ 你好
針對你的問題,可以再多說明一些嗎?
例如,你目前的程式碼,或是你目前嘗試的方法(想要用什麼現成function等等)
因為看得有點不是很理解,不知道能從哪邊幫忙 ><"
一般來說,能夠讓「資料」和「標註」有對應到的送進模型都可以
至於要用什麼方式就是看情況和習慣(?)
例如,如果是自定義讀檔方式的話
你可以把「圖片檔案所在的路徑」和該張圖片對應的「標註」
分別用list方式記錄,餵進模型再去讀圖片
希望這樣對你有幫助~
還有疑問的話,可以再提出來討論 :)
您好:
感謝您的留言 我已將目前程式碼貼出
我想問的是
我想用資料夾的方式(內含5張照片)
送進模型裡 讓他判斷此資料夾是"lcx", "rca",還是"lad"
哪一個種類
請問這是有辦法實現的嗎?
是可以實現的喔~
只是因為我看到你最後六行,看起來是在做前處理
所以我會建議你 get_data
的輸出是 影像路徑和label
到時候要餵到模型時,再透過路徑讀取檔案,然後做前處理
不過在資料量和檔案不大時,影響程度就不大
另外,既然 label 就是資料夾的名稱,而以你目前的寫法,在 get_data
裡面建立了 影像矩陣和標註的 list,但又在後面透過 for feature, label in train:
那段程式碼來分開,會覺得有點多此一舉
或者您是否方便說明一下,你希望 data 和 label 是以什麼方式輸入給模型,在目前的程式碼中,又是在哪邊遇到困難呢?
【換個角度的解法參考】
以你檔案儲存的方式,假設 label 剛好可以對應到檔案名稱,可以研究一下,透過 glob.glob()
(可以參考我之前寫的),分別把 train, val, test 的影像路徑都抓出來,然後再透過資料夾名稱去建立每張影像對應的 label。
請問我如果使用glob.glob()
,分別把 train, val, test 的影像路徑都抓出來,然後再透過資料夾名稱去建立每張影像對應的label,該用哪種方式餵給模型?